嗨!歡迎回到上班族的命令列生存手冊。上一章節我們提到了字體,以及 Nerd Font。談到安裝東西,就不能不提到「套件管理工具」。一般在 Linux 系統之中,都會內建一個相關的工具來讓使用者安裝軟體。
習慣 Windows 或是 macOS 的使用者,可能會認為軟體是安裝完後可以開啟的某種「圖形應用程式」。不過在文字界面之中,我們下的指令,其實也是一種程式,包括這次提到的「套件管理工具」,你可以想像成他是「沒有畫面的程式」或是「文字界面程式」。套件管理程式也能安裝「圖形應用程式」,例如在 Linux 中安裝 Sublime Text。
並且你可能會聽到有些人用「套件」(Package,中國翻譯成「包」) 來稱呼這些程式。基本上,能安裝進來的都能視為套件。
打個比方,今天我們想安裝 figlet 這個軟體 (以下都會改稱「套件」囉),他可以印出超酷大寫字,我們該怎麼做呢?
macOS 一出廠並沒有自帶套件管理工具,因此需要另外安裝一套第三方工具 homebrew 來管理套件。如果讀者發現在 Shell 裡頭輸入 brew 沒反應的話,請直接貼上以下內容執行即可:
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
註:一般來說,不要隨意執行網路上來路不明的 Script,才是一個好習慣。 雖然上面資訊是從官網複製,也建議讀者可以開啟上述連結前往官方網站查看相關資訊。
請使用發行版提供給你的工具,例如 Ubuntu (或其他延伸自 Debian) 的系統使用 apt
。筆者本人使用 Fedora ,Fedora 或是其他延伸自它的發行版提供的工具是 dnf
,使用上很類似,自行代換即可。
至於 macOS,請將以下的 dnf
更換為 brew
即可。
通常都會提供 search
方法,使用方式是 $ dnf search <想搜尋的套件名稱>
$ dnf search figlet
Ubuntu 的下法是
$ sudo apt search figlet
用 Homebrew 的讀者,請這樣下:
$ brew search figlet
注意到與上面的指令差異多了 sudo
,在 POSIX 系統中,需要有超級使用者權限才能更新套件庫。
套件可能已經有新的版本,或是套件庫有其他的更動,通常在安裝套件以前更新套件庫會是個好主義。
$ sudo dnf update
Ubuntu 的下法是
$ sudo apt update
Homebrew 則是
$ brew update
這個指令也有 sudo
,在 POSIX 系統中,需要有超級使用者權限才能安裝套件。
就像 Windows 安裝有些軟體時,會跳出使用者帳戶控制 (User Access Control)視窗確認。
在安裝以前,套件管理器通常還會幫你整理需要一併安裝的相依套件 (該套件用了其他的套件,而目前本機沒有)。和你確認之後才會真的安裝。
$ sudo dnf install <套件名稱>
$ sudo dnf install figlet
Ubuntu 的下法是 $ apt install <套件名稱>
$ sudo apt install figlet
Homebrew 則是 $ brew install <套件名稱>
$ brew install figlet
於 dnf list
後面提供套件名稱,如果有安裝就會印出結果
$ dnf list <套件名稱>
$ dnf list figlet
Ubuntu 的下法是 $ apt list <套件名稱>
$ sudo apt list figlet
Homebrew 也是類似 $ brew list <套件名稱>
$ brew list figlet
最後,如果想要移除套件,只要使用 $ dnf remove <套件名稱>
即可。(通常會是 remove 或是 uninstall …), Ubuntu 的下法是 $ apt remove <套件名稱>
如果有用不到的相依套件,也就是除了這個要被刪除的以外,沒有其他人使用的套件,也會被一併移除。Homebrew 也有類似用法,將 dnf
換成 brew
即是移除的指令。
同樣需要使用者同意,才會真的移除。
$ dnf remove figlet
還記得我們在 Day02 什麼是 Shell?什麼是 Terminal? 題到的 Standard Input 嗎?剛好 figlet 可以拿來作為範例。
直接執行 figlet 不輸入任何字,他會等待使用者輸入,也就是等待 Standard Input 也就是鍵盤打字給他資訊。但如果你將他要印的資料直接打在後面,他就會直接輸出,因為你已經將文字作為 Standard Input 給他了。
有了套件的概念之後,開啟 Terminal Emulator 遇到的第一題,就跟剛到一個全新的地點很像,第一個念頭可能是:「我在哪裡呀?」。而在 Shell 之中,我們該怎麼知道現在在哪呢?靜待下回分解。